Guava এবং Java Core Libraries এর মধ্যে সম্পর্ক

Guava এর ভবিষ্যত এবং আপডেট - গুয়াভা (Guava) - Java Technologies

337

Guava (Google Guava) Java-এর উপর ভিত্তি করে তৈরি একটি ওপেন-সোর্স লাইব্রেরি, যা Java Core Libraries-এর সীমাবদ্ধতাগুলি কাটিয়ে উঠতে এবং উন্নত বৈশিষ্ট্য প্রদানের জন্য ডিজাইন করা হয়েছে। Guava Java-এর Collections Framework, Concurrency Utilities, এবং অন্যান্য Core API-এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত।


Guava এবং Java Core Libraries-এর সম্পর্কিত দিক

1. Collections Framework

  • Java Core Libraries:
    • Java Core Libraries Collections Framework (java.util) ডেটা সংগ্রহ এবং ম্যানিপুলেশনের জন্য সরঞ্জাম প্রদান করে। এর মধ্যে List, Set, Map, এবং তাদের বিভিন্ন বাস্তবায়ন (e.g., ArrayList, HashMap) অন্তর্ভুক্ত।
  • Guava Enhancements:
    • Guava Collections Framework-কে উন্নত করতে নতুন ধরণের Immutable, Multimap, এবং BiMap প্রদান করে।
    • Guava-এর Collections API সাধারণ কাজগুলোকে সহজ করে।

Example: Immutable Collections

import com.google.common.collect.ImmutableList;

public class GuavaExample {
    public static void main(String[] args) {
        ImmutableList<String> list = ImmutableList.of("A", "B", "C");
        System.out.println(list); // Output: [A, B, C]
    }
}

তুলনা:

  • Java Core Collections-এ Mutable ও Immutable Collections এর জন্য আলাদা সমর্থন নেই (Java 9+ থেকে কিছু Immutable Collections যোগ করা হয়েছে)।
  • Guava Immutable Collections কার্যকর এবং thread-safe।

2. Concurrency Utilities

  • Java Core Libraries:
    • Java Core java.util.concurrent প্যাকেজে ExecutorService, Future, এবং CompletableFuture রয়েছে।
  • Guava Enhancements:
    • Guava ListenableFuture এবং Futures Utility প্রদান করে যা Java Core Future-এর তুলনায় আরও বেশি ফিচার সমৃদ্ধ।
    • এটি asynchronous কাজগুলিকে সহজ করে।

Example: ListenableFuture

import com.google.common.util.concurrent.*;
import java.util.concurrent.*;

public class GuavaConcurrency {
    public static void main(String[] args) throws Exception {
        ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));

        ListenableFuture<Integer> future = service.submit(() -> {
            TimeUnit.SECONDS.sleep(1);
            return 10;
        });

        Futures.addCallback(future, new FutureCallback<Integer>() {
            @Override
            public void onSuccess(Integer result) {
                System.out.println("Result: " + result); // Output: Result: 10
            }

            @Override
            public void onFailure(Throwable t) {
                System.out.println("Error: " + t.getMessage());
            }
        }, service);

        service.shutdown();
    }
}

তুলনা:

  • Java Core Future ব্লকিং আচরণ করে, যেখানে Guava ListenableFuture callback-এর মাধ্যমে non-blocking সমাধান প্রদান করে।
  • Guava Futures API asynchronous কাজ আরও modular করে।

3. Caching

  • Java Core Libraries:
    • Java Core Libraries-এ সরাসরি caching মেকানিজম নেই। সাধারণত HashMap বা অন্য Collections ব্যবহার করে caching পরিচালিত হয়।
  • Guava Enhancements:
    • Guava Cache API উন্নত caching মেকানিজম প্রদান করে (e.g., LRU caching, time-based eviction)।
    • এটি memory-efficient এবং ব্যবহার করা সহজ।

Example: Caching in Guava

import com.google.common.cache.*;

import java.util.concurrent.TimeUnit;

public class GuavaCache {
    public static void main(String[] args) {
        Cache<String, String> cache = CacheBuilder.newBuilder()
                .expireAfterWrite(5, TimeUnit.MINUTES)
                .maximumSize(100)
                .build();

        cache.put("key", "value");
        System.out.println(cache.getIfPresent("key")); // Output: value
    }
}

তুলনা:

  • Java Core Libraries caching-এর জন্য সরাসরি কোনও API প্রদান করে না।
  • Guava CacheBuilder উন্নত এবং কাস্টমাইজড caching সমর্থন করে।

4. Preconditions and Validation

  • Java Core Libraries:
    • Java Core-এ সাধারণত if-else এবং throw ব্যবহার করে প্রি-কন্ডিশন চেক করতে হয়।
  • Guava Enhancements:
    • Guava Preconditions ক্লাস চেকিং এবং কোড পরিষ্কার রাখতে সাহায্য করে।

Example: Preconditions

import com.google.common.base.Preconditions;

public class GuavaPreconditions {
    public static void main(String[] args) {
        int value = -1;
        Preconditions.checkArgument(value > 0, "Value must be positive!");
    }
}

তুলনা:

  • Java Core-এ ম্যানুয়াল কন্ডিশন চেক কোড বড় এবং জটিল হতে পারে।
  • Guava Preconditions একটি লাইনেই validation সহজ করে।

5. Strings Manipulation

  • Java Core Libraries:
    • Java Core-এ String, StringBuilder, এবং StringJoiner রয়েছে।
  • Guava Enhancements:
    • Guava Strings ক্লাস অতিরিক্ত স্ট্রিং অপারেশন যেমন null-safe চেকিং, padding, এবং splitting প্রদান করে।

Example: Strings Utility

import com.google.common.base.Strings;

public class GuavaStrings {
    public static void main(String[] args) {
        String input = null;
        System.out.println(Strings.isNullOrEmpty(input)); // Output: true
    }
}

তুলনা:

  • Guava Strings ক্লাস null-handling সহজ করে।
  • Java Core-এ null চেক করার জন্য ম্যানুয়াল কোড প্রয়োজন।

6. Functional Programming Support

  • Java Core Libraries:
    • Java Core (Java 8+) Stream API, Optional, এবং Lambda Expressions প্রদান করে।
  • Guava Enhancements:
    • Guava Function, Predicate, এবং FluentIterable ক্লাসগুলো functional programming-এর জন্য Java Core API-কে পরিপূর্ণ করে।

Example: FluentIterable

import com.google.common.collect.FluentIterable;

public class GuavaFluentIterable {
    public static void main(String[] args) {
        FluentIterable<Integer> numbers = FluentIterable.from(java.util.List.of(1, 2, 3, 4))
                .filter(num -> num % 2 == 0);
        numbers.forEach(System.out::println); // Output: 2, 4
    }
}

তুলনা:

  • Java Core Streams API Guava-এর functional utilities-এর চেয়ে আরও শক্তিশালী।
  • Guava pre-Java 8-এর জন্য functional API প্রদান করেছিল।

Guava এবং Java Core Libraries-এর পার্থক্য

ফিচারJava Core LibrariesGuava
CollectionsMutable এবং Immutable (Java 9+)Mutable এবং Immutable (Java 9-এর আগে)
Cachingসরাসরি নেইBuilt-in Cache API
ConcurrencyBasic (Future, Executors)ListenableFuture, Futures API
ValidationBasicPreconditions API
String UtilitiesLimitedExtensive
Functional SupportStreams, Lambdas (Java 8+)FluentIterable, Function, Predicate

  • Guava Java Core Libraries-এর সীমাবদ্ধতাগুলি কাটিয়ে উঠতে সাহায্য করে এবং অতিরিক্ত ফিচার প্রদান করে।
  • Guava Core Libraries-এর উপর ভিত্তি করেই কাজ করে, তবে আরও উচ্চ-স্তরের abstraction এবং সুবিধা দেয়।
  • Java 8+ এ Streams এবং Optional যোগ হওয়ার পর কিছু ক্ষেত্রে Guava-এর প্রয়োজনীয়তা কমে গেছে, তবে caching, concurrency, এবং Immutable Collections-এর জন্য এটি এখনও অপরিহার্য।
Content added By
Promotion

Are you sure to start over?

Loading...